home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************************************
- Moofwars.h
-
- All of the standard application conditionals are defined in this header, along with
- all of the global variables declared by the game.
-
- Author: Timothy Carroll
- Apple Developer Technical Support
- timc@apple.com
-
- Modification History:
-
- 8/15/96 TMC Initial Release
- 1/23/97 TMC Conditionalized inclusion of MacHeadersPPC so that MrC will compile
- 1/23/97 TMC Moved the Error Macros to an external file.
- 2/24/97 TMC Moved conditional builds to an external file so that error macros can
- can be loaded separate from MoofWars.h
-
- Copyright © 1996 Apple Computer, Inc., All Rights Reserved
-
- You may incorporate this sample code into your applications without
- restriction, though the sample code has been provided "AS IS" and the
- responsibility for its operation is 100% yours. However, what you are
- not permitted to do is to redistribute the source as "DSC Sample Code"
- after having made changes. If you're going to re-distribute the source,
- we require that you make it clear in the source that the code was
- descended from Apple Sample Code, but that you've made changes.
-
- *************************************************************************************/
-
- #ifndef _MOOFWARS_
- #define _MOOFWARS_
-
- #pragma once
-
- #include <Quickdraw.h>
- #include <Palettes.h>
- #include <DrawSprocket.h>
-
-
- // 2/24/97
- // We now include the app conditionals from a separate file to prevent library files
- // from needing to specifically include our MoofWars header by name.
- #include "AppConditionals.h"
-
-
- // Moved the error macros out to the generic libraries, since I use them in other
- // projects.
- #include "Error Macros.h"
-
- /*********************************************************************************
- OTHER NECESSARY HEADERS
- *********************************************************************************/
- #include "TCommandTimer.h"
- #include "Scaling.h"
- #include "TGraphicCollection.h"
-
- #if qUsingSound
- #include "Hollywood.h"
- #endif
-
-
- /*********************************************************************************
- CONSTANTS
- *********************************************************************************/
-
-
- // A few standard colors -- probably should use palette calls instead!
- const RGBColor kWhite = {0xFFFF, 0xFFFF, 0xFFFF};
- const RGBColor kBlack = {0x0000, 0x0000, 0x0000};
- const RGBColor kDarkBlue = {0x0000,0x0000,0x7000};
- const RGBColor kLtGrey = {0xC000,0xC000,0xC000};
- const RGBColor kMediumGrey = {0x7FFF,0x7FFF,0x7FFF};
-
- // The ResID of the application's color table. All of my custom graphics routines use
- // an 8-bit color table and the sprite is encoded to use these colors. The actual variable
- // to hold the color table is declared below.
-
- enum {
- kAppColorTableResID = 128
- };
-
- // Various constants used to load the background tile and sprite graphics.
-
- enum {
- kGridResourceID = 500,
- kShipResourceID = 1000,
- kShotResourceID = 1001,
- kEnemyResourceID = 1003
- };
-
- // A few keys on the keyboard -- these are the ones I use right now, at least until I add
- // a real configuration dialog.
- enum
- {
- kEscapeKey = 0x35,
- kPauseKey = 0x71,
-
- kUpKey = 0x7E,
- kDownKey = 0x7D,
- kLeftKey = 0x7B,
- kRightKey = 0x7C,
-
- kPeriod = 0x2F,
- kComma = 0x2B,
-
- kZKey = 0x06,
- kXKey = 0x07,
- kCKey = 0x08,
- kVKey = 0x09,
- kAKey = 0x00,
-
- kOne = 0x12,
- kTwo = 0x13,
- kThree = 0x14,
- kFour = 0x15,
- kZero = 0x1D
- };
-
- // Here's the actual mapping of the keys above to functions on the keyboard. Change these
- // to change the key settings.
-
- enum
- {
- kExitGame = kEscapeKey,
- kDebugger = kPauseKey,
-
- kShipRotateLeft = kComma,
- kShipRotateRight = kPeriod,
- kShipApplyThrust = kUpKey,
- kShipFireShot = kLeftKey,
- kShipFireCluster = kRightKey,
-
- kEnemyRotateLeft = kZKey,
- kEnemyRotateRight = kXKey,
- kEnemyThrustForward = kCKey,
- kEnemyThrustBackward = kVKey,
- kEnemyFireShots = kAKey,
-
- kPlaySoundOne = kOne,
- kPlaySoundTwo = kTwo,
- kPlaySoundThree = kThree,
- kPlaySoundFour = kFour,
- kSoundToggle = kZero
- };
- /*********************************************************************************
- VARIABLES
- *********************************************************************************/
-
- // Holds the bounds of the playing field.
- extern WorldRect32 gWorldBounds;
-
- // The main color table described above
- extern CTabHandle gAppColorTable;
-
- // Our draw sprocket context.
- extern DSpContextReference gDrawContext;
-
- // And a running total of the number of shots on the board. We only keep this if
- // we are going to display this number on the screen.
- #if qShowTiming
- extern long gShotsOnBoard;
- #endif
-
- // Holds the current state of the keyboard and other input devices when processing
- // the list of sprites.
- extern TInputState gCommandKeys;
-
- // A standard set of lookup tables in 16.16 fixed notation, so that we can quickly
- // do sin and cos. We currently use 48 frames because thats easy to do from
- // Specular Infini-D. 360/48 = 7.5° per angle.
- extern long gSinLookup[48];
- extern long gCosLookup[48];
-
- // Currently we are using the hollywood API, we'll either change to our own API or
- // remove sound code before shipping.
- #if qUsingSound
- extern SndReference gSounds[10];
- extern Boolean gPlayingSound;
- #endif
-
- // These hold all of the games graphics. We export these because we can create
- // sprites faster if it is already known that the sprites are loaded.
- extern TGraphicCollection *gShipGraphics;
- extern TGraphicCollection *gEnemyGraphics;
- extern TGraphicCollection *gShotGraphics;
- /*********************************************************************************
- FUNCTIONS
- *********************************************************************************/
-
- // This checks a particular key value against the 128-bit number returned by GetKeys.
- extern Boolean CheckKey (unsigned char *PtrToKeyMap, short theKey);
-
-
- #endif /* _MOOFWARS_ */
-
-